package main

import "fmt"

// type person struct {
// 	name string
// 	age  int
// 	address
// 	workplace
// }

// type address struct {
// 	province string
// 	city     string
// }
// type workplace struct {
// 	city   string
// 	street string
// }

// // type company struct {
// // 	name string
// // }

// func main() {
// 	p := &person{
// 		"greg",
// 		19,
// 		address{"fujian", "xiamen"},
// 		workplace{"xiamen", "siming616"},
// 	}

// 	b := p

// 	fmt.Printf("modify before %v :\n", b)
// 	p.name = "hexing"

// 	fmt.Printf("modify after %v : \n", b)

// 	fmt.Println(p.address.city)

// }

func Producer2() <-chan int {
	ch := make(chan int, 2)
	// 创建一个新的goroutine执行发送数据的任务
	go func() {
		for i := 0; i < 10; i++ {
			if i%2 == 1 {
				ch <- i
			}
		}
		close(ch) // 任务完成后关闭通道
	}()

	return ch
}

// Consumer2 参数为接收通道
func Consumer2(ch <-chan int) int {
	sum := 0
	for v := range ch {
		sum += v
	}
	return sum
}

func main() {
	ch2 := Producer2()

	res2 := Consumer2(ch2)
	fmt.Println(res2) // 25
}
